import { get, post, postWithQueryParams } from "@/api/request";

/**
 * 合同实际支付控制器 / 合同实际支付控制器添加
 * @param {object} data
 * @param {number} [data.accumulatedPaymentAmount] 累计付款金额
 * @param {number} [data.actualPaymentAmount] 实际支付金额
 * @param {string} [data.actualPaymentDate] 实际支付日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.actualPaymentNumber] 实际支付编号
 * @param {number} [data.actualPaymentRatio] 实际付款比例
 * @param {array<number>} [data.attachList] 附件ID列表
 * @param {string} [data.bankAccountName] 银行账户名称
 * @param {string} [data.content] 内容
 * @param {number} [data.contractId] 合同id
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建用户
 * @param {number} [data.delFlag] 是否已删除(0否；1是)
 * @param {number} [data.id] id
 * @param {string} [data.openingBank] 开户行
 * @param {string} [data.payee] 收款单位
 * @param {string} [data.paymentAccount] 付款账户
 * @param {string} [data.paymentBankAccount] 付款银行账号
 * @param {string} [data.paymentBankNumber] 付款行号
 * @param {number} [data.paymentMethod] 支付方式
 * @param {string} [data.receivingBankAccount] 收款银行账号
 * @param {string} [data.receivingBankNumber] 收款行号
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新用户
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<number>}
 */
export function contractActualPaymentAdd(data, config) {
  return post("/contractActualPayment/add", data, config);
}

/**
 * 合同实际支付控制器 / 合同实际支付控制器删除
 * @param {object} params
 * @param {object} data
 * @param {string} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<number>}
 */
export function contractActualPaymentDelete(params, data, config) {
  return postWithQueryParams("/contractActualPayment/delete", params, data, config);
}

/**
 * 合同实际支付控制器 / 合同实际支付控制器查询详情
 * @param {object} params
 * @param {number} params.id ID
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<ContractActualPayment页面展示实体>}
 */
export function contractActualPaymentDetail(params, config) {
  return get("/contractActualPayment/detail", params, config);
}

/**
 * 合同实际支付控制器 / 合同实际支付控制器根据合同id查询列表
 * @param {object} data
 * @param {number} [data.accumulatedPaymentAmount] 累计付款金额
 * @param {number} [data.actualPaymentAmount] 实际支付金额
 * @param {string} [data.actualPaymentNumber] 实际支付编号
 * @param {string} [data.bankAccountName] 银行账户名称
 * @param {string} [data.bankAccountNumber] 银行账号
 * @param {string} [data.bankNumber] 行号
 * @param {string} [data.content] 内容
 * @param {number} [data.contractId] 合同id
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建用户
 * @param {number} [data.delFlag] 是否已删除(0否；1是)
 * @param {number} [data.id] id
 * @param {number} [data.length] 分页大小
 * @param {string} [data.openingBank] 开户行
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.payee] 收款单位
 * @param {string} [data.paymentAccount] 付款账户
 * @param {number} [data.paymentMethod] 支付方式
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新用户
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<ContractActualPayment页面展示实体>>}
 */
export function contractActualPaymentGetByContractId(data, config) {
  return post("/contractActualPayment/getByContractId", data, config);
}

/**
 * 合同实际支付控制器 / 合同实际支付控制器分页查询
 * @param {object} data
 * @param {number} [data.accumulatedPaymentAmount] 累计付款金额
 * @param {number} [data.actualPaymentAmount] 实际支付金额
 * @param {string} [data.actualPaymentNumber] 实际支付编号
 * @param {string} [data.bankAccountName] 银行账户名称
 * @param {string} [data.bankAccountNumber] 银行账号
 * @param {string} [data.bankNumber] 行号
 * @param {string} [data.content] 内容
 * @param {number} [data.contractId] 合同id
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建用户
 * @param {number} [data.delFlag] 是否已删除(0否；1是)
 * @param {number} [data.id] id
 * @param {number} [data.length] 分页大小
 * @param {string} [data.openingBank] 开户行
 * @param {number} [data.orderAsc] 排序方向
 * @param {string} [data.orderColum] 排序字段
 * @param {number} [data.pageIndex] 分页下标
 * @param {string} [data.payee] 收款单位
 * @param {string} [data.paymentAccount] 付款账户
 * @param {number} [data.paymentMethod] 支付方式
 * @param {number} [data.start] 查询记录起始下标
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新用户
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<分页返回实体<ContractActualPayment页面展示实体>>}
 */
export function contractActualPaymentList(data, config) {
  return post("/contractActualPayment/list", data, config);
}

/**
 * 合同实际支付控制器 / 合同实际支付控制器更新
 * @param {object} data
 * @param {number} [data.accumulatedPaymentAmount] 累计付款金额
 * @param {number} [data.actualPaymentAmount] 实际支付金额
 * @param {string} [data.actualPaymentDate] 实际支付日期 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.actualPaymentNumber] 实际支付编号
 * @param {number} [data.actualPaymentRatio] 实际付款比例
 * @param {array<number>} [data.attachList] 附件ID列表
 * @param {string} [data.bankAccountName] 银行账户名称
 * @param {string} [data.content] 内容
 * @param {number} [data.contractId] 合同id
 * @param {string} [data.createTime] 创建时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.createUser] 创建用户
 * @param {number} [data.delFlag] 是否已删除(0否；1是)
 * @param {number} [data.id] id
 * @param {string} [data.openingBank] 开户行
 * @param {string} [data.payee] 收款单位
 * @param {string} [data.paymentAccount] 付款账户
 * @param {string} [data.paymentBankAccount] 付款银行账号
 * @param {string} [data.paymentBankNumber] 付款行号
 * @param {number} [data.paymentMethod] 支付方式
 * @param {string} [data.receivingBankAccount] 收款银行账号
 * @param {string} [data.receivingBankNumber] 收款行号
 * @param {string} [data.updateTime] 更新时间 YYYY-MM-DD HH:mm:ss
 * @param {string} [data.updateUser] 更新用户
 * @param {import("axios").AxiosRequestConfig} [config]
 * @returns {Promise<number>}
 */
export function contractActualPaymentUpdate(data, config) {
  return post("/contractActualPayment/update", data, config);
}

/**
 * @template T
 * @typedef {Object} 分页返回实体
 * @property {T[]} content - 内容
 * @property {number} elementsNo
 * @property {number} limit
 * @property {number} number
 * @property {number} totalElements
 * @property {number} totalPages
 * @description 分页返回实体
 */

/**
 * @typedef {object} ContractActualPayment页面展示实体 页面展示实体
 * @property {number} accumulatedPaymentAmount 累计付款金额
 * @property {number} actualPaymentAmount 实际支付金额
 * @property {string} actualPaymentDate 实际支付日期
 * @property {string} actualPaymentNumber 实际支付编号
 * @property {number} actualPaymentRatio 实际付款比例
 * @property {string} bankAccountName 银行账户名称
 * @property {string} content 内容
 * @property {number} contractId 合同id
 * @property {string} createTime 创建时间
 * @property {string} createUser 创建用户
 * @property {number} delFlag 是否已删除(0否；1是)
 * @property {number} id
 * @property {string} openingBank 开户行
 * @property {string} payee 收款单位
 * @property {string} paymentAccount 付款账户
 * @property {string} paymentBankAccount 付款银行账号
 * @property {string} paymentBankNumber 付款行号
 * @property {number} paymentMethod 支付方式
 * @property {string} receivingBankAccount 收款银行账号
 * @property {string} receivingBankNumber 收款行号
 * @property {string} updateTime 更新时间
 * @property {string} updateUser 更新用户
 * @description 页面展示实体
 */
